/*
 * Propiedad de Fernando Lorenta
 * Ejercicios Java PCarrier
 * 
 * Esta Clase crea el JFrame principal
 */

package ventanaPrincipal;

import com.sun.org.apache.xpath.internal.operations.Mod;
import fonts.FuenteTitulo;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author fernan
 */
public class VentanaPrincipalWindow extends JFrame{
    
    private JMenuBar menuBar;
    private JMenu archivo, edicion;
    private JMenuItem salir, ejerJMI;
    private Container contenedor;
    private GridBagConstraints restricciones;
    private JLabel tituloJLB, boletinJLB, tituloDescripcionJLB, tituloDescripcionJBL;
    private JComboBox boletinJCBX;
    private JTable tablaEjercicios;
    private JScrollPane scrollTablaEjercicios, scrollDescripcionJTA;
    private JButton ejecutarEjerBTN, salirBTN;
    private JTextArea descripcionJTA;
    private VentanaPrincipal ventanaPrincipal;
    
    
    public VentanaPrincipalWindow() {
    
        super("Ejercicios PCarrier");
        
        //
        //Barra Menús
        //
        menuBar = new JMenuBar();
        setJMenuBar(menuBar);
        
        salir = new JMenuItem("Salir");
        
        archivo = new JMenu("Archivo");
        archivo.add(salir);
        
        ejerJMI = new JMenuItem("Ejercicios");
        
        edicion = new JMenu("Edición");
        edicion.add(ejerJMI);
        
        menuBar.add(archivo);
        menuBar.add(edicion);
        
        //
        //Contenedor y el Layout
        //
        contenedor = getContentPane();
        contenedor.setLayout(new GridBagLayout());
        restricciones = new GridBagConstraints();
               
        restricciones.insets = new Insets(8, 8, 8, 8);
        
        //
        //Títutlo Lista de ejercicios
        //
        restricciones.gridx = 0;
        restricciones.gridy = 0;
        restricciones.gridwidth = 3;
        
        tituloJLB = new JLabel("Lista de Ejercicios:");
        FuenteTitulo ft = new FuenteTitulo();
        tituloJLB.setFont(ft);
        contenedor.add(tituloJLB, restricciones);
        
        //
        //Label del ComboBox para elegir el boletín
        //
        restricciones.gridx = 0;
        restricciones.gridy = 1;
        restricciones.gridwidth = 1;
        
        boletinJLB = new JLabel("Selecciona Boletín:");
        contenedor.add(boletinJLB, restricciones);
        
        //
        //ComboBox para elegir boletín
        //
        restricciones.gridx = 1;
        restricciones.gridwidth = 2;
        restricciones.fill = GridBagConstraints.HORIZONTAL;
        
        boletinJCBX = new JComboBox();
        contenedor.add(boletinJCBX, restricciones);
        
        //
        //Tabla de ejercicios
        //
        restricciones.gridx = 0;
        restricciones.gridy = 2;
        restricciones.gridwidth = 3;
        restricciones.fill = GridBagConstraints.BOTH;
        restricciones.weightx = 1.0;
        restricciones.weighty = 1.0;
        
        //Creo la tabla
        tablaEjercicios = new JTable();
        
        //Creo un ScrollPane para añadir la tabla
        scrollTablaEjercicios = new JScrollPane(tablaEjercicios);
              
        contenedor.add(scrollTablaEjercicios, restricciones);   
        
        //
        //Botón Ejecutar ejercicio seleccionado en la tabla
        //
        restricciones.gridx = 2;
        restricciones.gridy = 3;
        restricciones.gridwidth = 1;
        restricciones.fill = GridBagConstraints.NONE;
        restricciones.anchor = GridBagConstraints.EAST;
        restricciones.weightx = 0.0;
        restricciones.weighty = 0.0;
        
        ejecutarEjerBTN = new JButton("Ejecutar Ejercicio");
        
        contenedor.add(ejecutarEjerBTN, restricciones);
        
        //
        //Descripcion del ejercicio Label
        //
        restricciones.gridx = 0;
        restricciones.gridy = 4;
        restricciones.anchor = GridBagConstraints.WEST;
        
        tituloDescripcionJBL = new JLabel("Descripción:");
        contenedor.add(tituloDescripcionJBL, restricciones);
        
        //
        //Descripción JTextArea
        //
        restricciones.gridy = 5;
        restricciones.gridwidth = 3;
        restricciones.fill = GridBagConstraints.BOTH;
        restricciones.weightx = 1.0;
        restricciones.weighty = 0.2;
        
        descripcionJTA = new JTextArea();
        //Hacemos que cuando llegue al final del JTextArea salte de línea automáticamente
        descripcionJTA.setLineWrap(true);
        //Que busque el salto de línea en espacios en blanco
        descripcionJTA.setWrapStyleWord(true);
        //Hago el JTextArea no editable
        descripcionJTA.setEditable(false);
        //Quito el color de fondo del JTextarea
        descripcionJTA.setOpaque(false);
        
        scrollDescripcionJTA = new JScrollPane(descripcionJTA);
        scrollDescripcionJTA.setBorder(new EmptyBorder(0, 0, 0, 0));
        
        contenedor.add(scrollDescripcionJTA, restricciones);
        
        //
        //Botón Salir
        //
        restricciones.gridx = 2;
        restricciones.gridy = 6;
        restricciones.gridwidth = 1;
        restricciones.fill = GridBagConstraints.NONE;
        restricciones.anchor = GridBagConstraints.EAST;
        restricciones.weightx = 0.0;
        restricciones.weighty = 0.0;
        
        salirBTN =  new JButton("Salir");
        //Asigno que los acitionPerformed del ActionListener los voy a controlar desde ventanaPrincipal
        contenedor.add(salirBTN, restricciones);
        
        //Una vez instanciado todo, creo la ventana que controla datos
        ventanaPrincipal = new VentanaPrincipal(this);
        
        //Añado los actionListener que se controlan en ventanaPrincipal
        salir.addActionListener(ventanaPrincipal);
        salirBTN.addActionListener(ventanaPrincipal);
        ejerJMI.addActionListener(ventanaPrincipal);
        boletinJCBX.addActionListener(ventanaPrincipal);
        
    }//public VentanaPrincipalWindow()

    
    public JComboBox getBoletinJCBX() {
        return boletinJCBX;
    }//public JComboBox getBoletinJCBX()

    public JScrollPane getScrollTablaEjercicios() {
        return scrollTablaEjercicios;
    }//public JScrollPane getScrollTablaEjercicios()
    
    public JTable getTablaEjercicios() {
        return tablaEjercicios;
    }//public JTable getTablaEjercicios()

    public void setTablaEjercicios(JTable tablaEjercicios) {
        this.tablaEjercicios = tablaEjercicios;
    }//public void setTablaEjercicios(JTable tablaEjercicios)
 
    public JButton getSalirBTN() {
        return salirBTN;
    }//public JButton getSalirBTN()

    public JMenuItem getSalir() {
        return salir;
    }//public JMenuItem getSalir()

    public JTextArea getDescripcionJTA() {
        return descripcionJTA;
    }//public JTextArea getDescripcionJTA()   

    public JMenuItem getEjerJMI() {
        return ejerJMI;
    }
       
}//public class VentanaPrincipalWindow extends JFrame
